package com.ruoyi.system.domain;

import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;

/**
 * 消费规则，定义用户消费过程中的时间、门禁、退款等核心规则对象 consumption_rules
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@Data
@ApiModel("消费规则，定义用户消费过程中的时间、门禁、退款等核心规则对象")
public class ConsumptionRules extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /** 消费规则唯一标识ID，主键自增 */
    @ApiModelProperty("消费规则唯一标识ID，主键自增")
    private Long id;

    /** 用户自助预订开关（0=关闭，1=开启）：控制用户是否可自助发起预订及消费 */
    @ApiModelProperty("用户自助预订开关（0=关闭，1=开启）：控制用户是否可自助发起预订及消费")
    @Excel(name = "用户自助预订开关", readConverterExp = "0==关闭，1=开启")
    private Integer userSelfBookingEnabled;

    /** 开始消费时间范围（格式：HH:MM-HH:MM，如"09:00-22:00"） */
    @ApiModelProperty("开始消费时间范围（格式：HH:MM-HH:MM，如\"09:00-22:00\"）")
    @Excel(name = "开始消费时间范围")
    private String startConsumptionRange;

    /** 可提前开始消费的分钟数（0=不可提前，如30表示可提前30分钟开始消费） */
    @ApiModelProperty("可提前开始消费的分钟数（0=不可提前，如30表示可提前30分钟开始消费）")
    @Excel(name = "可提前开始消费的分钟数", readConverterExp = "0==不可提前，如30表示可提前30分钟开始消费")
    private Integer maxAdvanceConsumptionMinutes;

    /** 可提前开大门的分钟数（0=不可提前，如15表示可提前15分钟开大门） */
    @ApiModelProperty("可提前开大门的分钟数（0=不可提前，如15表示可提前15分钟开大门）")
    @Excel(name = "可提前开大门的分钟数", readConverterExp = "0==不可提前，如15表示可提前15分钟开大门")
    private Integer maxAdvanceDoorOpenMinutes;

    /** 消费中不锁门（0=关闭，1=开启）：允许消费过程中大门保持开启状态 */
    @ApiModelProperty("消费中不锁门（0=关闭，1=开启）：允许消费过程中大门保持开启状态")
    @Excel(name = "消费中不锁门", readConverterExp = "0==关闭，1=开启")
    private Integer keepDoorOpenDuringService;

    /** 清台时间（分钟）：消费结束后需完成清台的标准时长 */
    @ApiModelProperty("清台时间（分钟）：消费结束后需完成清台的标准时长")
    @Excel(name = "清台时间", readConverterExp = "分=钟")
    private Integer clearingTimeMinutes;

    /** 取消订单可退款时间（分钟，0=不可退款）：如30表示订单开始前30分钟内取消可退款 */
    @ApiModelProperty("取消订单可退款时间（分钟，0=不可退款）：如30表示订单开始前30分钟内取消可退款")
    @Excel(name = "取消订单可退款时间", readConverterExp = "分=钟，0=不可退款")
    private Integer refundableBeforeCancelMinutes;

    /** 自动取消订单时间（分钟，0=不自动取消）：如15表示订单开始后15分钟未到店则自动取消 */
    @ApiModelProperty("自动取消订单时间（分钟，0=不自动取消）：如15表示订单开始后15分钟未到店则自动取消")
    @Excel(name = "自动取消订单时间", readConverterExp = "分=钟，0=不自动取消")
    private Integer autoCancelOrderMinutes;

    /** 自动取消不退款（0=退款，1=不退款）：自动取消订单时是否退还费用 */
    @ApiModelProperty("自动取消不退款（0=退款，1=不退款）：自动取消订单时是否退还费用")
    @Excel(name = "自动取消不退款", readConverterExp = "0==退款，1=不退款")
    private Integer autoCancelNonRefundable;

    /** 消费结束后开门保留时间（分钟，0=立即关闭）：如10表示消费结束后大门保持开启10分钟 */
    @ApiModelProperty("消费结束后开门保留时间（分钟，0=立即关闭）：如10表示消费结束后大门保持开启10分钟")
    @Excel(name = "消费结束后开门保留时间", readConverterExp = "分=钟，0=立即关闭")
    private Integer doorKeepOpenAfterServiceMinutes;

    /** 消费结束后续费保留时间（分钟，0=不可续费）：如60表示消费结束后60分钟内可续费并保留大门开启状态 */
    @ApiModelProperty("消费结束后续费保留时间（分钟，0=不可续费）：如60表示消费结束后60分钟内可续费并保留大门开启状态")
    @Excel(name = "消费结束后续费保留时间", readConverterExp = "分=钟，0=不可续费")
    private Integer extensionKeepOpenAfterServiceMinutes;

    /** 规则状态（0=禁用，1=启用） */
    @ApiModelProperty("规则状态（0=禁用，1=启用）")
    @Excel(name = "规则状态", readConverterExp = "0==禁用，1=启用")
    private Integer ruleStatus;

    /** 手机号 */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String phone;
}